﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JihankiLib
{
    /// <summary>
    /// メッセージ
    /// </summary>
    public class JihankiMessage
    {
        protected JihankiMessage() { }
    }

    /// <summary>
    /// メッセージ - 処理の開始
    /// </summary>
    public class RunMessage : JihankiMessage
    {
    }

    /// <summary>
    /// メッセージ - 自販機アイテムが空になった
    /// </summary>
    public class JihanItemBoxEmptMessage : JihankiMessage
    {
        public ItemBoxUnit Unit { get; set; }
    }

    /// <summary>
    /// メッセージ - 自販機アイテムが補充された
    /// </summary>
    public class ItemReplenishedMessage : JihankiMessage
    {
        public ItemBoxUnit Unit { get; set; }
    }

    /// <summary>
    /// メッセージ - 商品が購入された
    /// </summary>
    public class ItemPurchasedMessage : JihankiMessage
    {
        public ItemBoxUnit Unit { get; set; }
        public MoneySet Money { get; set; }
    }

    /// <summary>
    /// メッセージ - お金が投入された
    /// </summary>
    public class AddedMoneyMessage : JihankiMessage
    {
        public MoneySet Added { get; set; }
        public MoneySet Total { get; set; }
    }

    /// <summary>
    /// メッセージ - 入金分が排出された
    /// </summary>
    public class RejectedAllMoneyMessage : JihankiMessage
    {
        public MoneySet RejectedValue { get; set; }
    }

    /// <summary>
    /// メッセージ - 格納可能上限を超えた
    /// </summary>
    public class UpperLimitOverMessage : JihankiMessage
    {
        public MoneyType MType { get; set; }
    }

    /// <summary>
    /// メッセージ - ストック警告下限を超えた
    /// </summary>
    public class LowerLimitOverMessage : JihankiMessage
    {
        public MoneyType MType { get; set; }
    }

    /// <summary>
    /// メッセージ - お金ストックが空になった
    /// </summary>
    public class EmptyMoneyMessage : JihankiMessage
    {
        public MoneyType MType { get; set; }
    }
}
